﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace HomeworkWithStrings
{
    class Program
    {
        static void Main(string[] args)
        {
            //1) Пользователь вводит строку.Необходимо удалить из нее все пробелы, после этого определить является ли она палиндромом (одинаково пишется как с начала так и с конца)
            //2) Считать текстовый файл.Определить самую длинную строку в файле и вывести ее номер на экран. Если строк несколько - то вывести номера всех таких строк.
            //3) Считать текстовый файл.Пользователь вводит букву, необходимо вывести все слова в файле которые начинаются или заканчиваются на эту букву
            //для этих заданий можно брать файл который вам Саша давал на занятии


            //   Task 1
            Console.WriteLine("Enter something:");
            string userString = Console.ReadLine();
            userString = userString.Replace(" ", "");
            int count = 0;
            for (int i = 0; i < userString.Length; i++)
            {
                if (userString[i] == userString[userString.Length - (i + 1)])
                {
                    count++;
                }
            }
            if (count == userString.Length)
            {
                Console.WriteLine("String is a palindrom");
            }
            else
            {
                Console.WriteLine("String is not palindrom");
            }

            //   Task 2
            //2) Считать текстовый файл.Определить самую длинную строку в файле и вывести ее номер на экран. Если строк несколько - то вывести номера всех таких строк.
            Console.WriteLine(); 

            string newStr = @"D:\Programming\С#\Training_CodPlex\Inteducation\mvdovare\FilesDirectory\FilesDirectory\FileResources\NewFolder";
            Directory.CreateDirectory(newStr);

            string[] files = Directory.GetFiles(@"D:\Programming\С#\Training_CodPlex\Inteducation\mvdovare\FilesDirectory\FilesDirectory\FileResources\NewFolder", "*.txt",
                SearchOption.TopDirectoryOnly);

            string filePath = @"D:\Programming\С#\Training_CodPlex\Inteducation\mvdovare\FilesDirectory\FilesDirectory\FileResources\NewFolder\HT.txt";

            if (Directory.Exists(newStr))
            {

                List<Longest> listOfLongest = new List<Longest>();
                List<LongestSentence> listOfSentences = new List<LongestSentence>();
                string files2 = File.ReadAllText(filePath);
                Console.WriteLine(files2);
                files2 = files2.Replace("\r\n\r\n", " ");
                string[] filesresult = files2.Split(' ');
                string[] sentences = files2.Split('.');
                int wordCount = filesresult.Length;
                Console.WriteLine();
                string longestSentence = "";
                foreach (var sentence in sentences)
                {
                    if (sentence.Length > longestSentence.Length)
                    {
                        longestSentence = sentence;
                    }
                }
                for (int i = 0; i < sentences.Length; i++)
                {
                    if (sentences[i].Length == longestSentence.Length)
                    {
                        LongestSentence newSentence = new LongestSentence();
                        newSentence.longestSentenceOfAll = sentences[i];
                        newSentence.numberOfLongestSentence = i + 1;
                        listOfSentences.Add(newSentence);
                    }
                }
                Console.WriteLine("The longest sentence in the text is:");
                foreach (var senten in listOfSentences)
                {
                    Console.WriteLine("The number of the sentence is - {0}. Length of it is - {1}.", senten.numberOfLongestSentence, senten.longestSentenceOfAll.Length );
                }

                Console.WriteLine();
                string longestWord = "";
                foreach (var word in filesresult)
                {
                    if (word.Trim(',', '.', '(', ')').Length >= longestWord.Length)
                    {
                        longestWord = word.Trim(',', '.', '(', ')');
                    }
                    else
                    {
                        continue;
                    }
                }

                for (int i = 0; i < filesresult.Length; i++)
                {
                    if (filesresult[i].Trim(',', '.', '(', ')').Length == longestWord.Length)
                    {
                        Longest newWord = new Longest();
                        newWord.longestWordofAll = filesresult[i].Trim(',', '.', '(', ')');
                        newWord.numberOfLongestWord = i + 1;
                        listOfLongest.Add(newWord);
                    }
                    else
                    {
                        continue;
                    }
                }

                Console.WriteLine("Amount of words is - {0}.", wordCount);
                foreach (var element in listOfLongest)
                {
                    Console.WriteLine("The number of longest word is {0} - \"{1}\"; with length - {2} letters.", element.numberOfLongestWord, element.longestWordofAll, element.longestWordofAll.Length);
                }

                //   Task 3
                //3) Считать текстовый файл.Пользователь вводит букву, необходимо вывести все слова в файле которые начинаются или заканчиваются на эту букву

                Console.WriteLine();
                Console.WriteLine("Enter a letter the word starts or ends with:");
                char letter = char.Parse(Console.ReadLine());
                
                foreach (var word in filesresult)
                {
                    if (word.Trim(',', '.', '(', ')').IndexOf(letter) == 0 || word.Trim(',', '.', '(', ')').IndexOf(letter) == word.Length-1)
                    {
                        Console.WriteLine(word.Trim(',', '.', '(', ')'));
                    }
                }

            }
            
            


        }
    }
}
